package com.qiwenshare.file.mapper;

import java.util.List;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qiwenshare.file.domain.user.UserBean;
import com.qiwenshare.file.dto.archive.ArchiveCodeDTO;
import com.qiwenshare.file.vo.archive.ArchiveTypeVo;
import com.qiwenshare.file.vo.archive.ArchiveVo;
import com.qiwenshare.file.vo.user.UserLoginVo;
import org.apache.ibatis.annotations.Param;
import com.qiwenshare.file.domain.Archive;

/**
 * 档案信息表(Archive)表数据库访问层
 *
 * @author makejava
 * @since 2023-10-08 21:09:13
 */
public interface ArchiveMapper extends BaseMapper<Archive> {

    /**
     * 批量新增数据（MyBatis原生foreach方法）
     *
     * @param entities List<Archive> 实例对象列表
     * @return 影响行数
     */
    int insertBatch(@Param("entities") List<Archive> entities);

    /**
     * 批量新增或按主键更新数据（MyBatis原生foreach方法）
     *
     * @param entities List<Archive> 实例对象列表
     * @return 影响行数
     * @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常，请自行校验入参
     */
    int insertOrUpdateBatch(@Param("entities") List<Archive> entities);

    IPage<ArchiveVo> selectPageVo(Page<?> page, @Param("archiveName") String archiveName,
                                  @Param("fileType") Integer fileType,
                                  @Param("archiveTypeId") String archiveTypeId,
                                  @Param("archiveCode") String archiveCode,
                                  @Param("departmentId") String departmentId,
                                  @Param("startDate") String startDate,
                                  @Param("endDate") String endDate
    );
    IPage<ArchiveVo> selectPageVoWithApprove(Page<?> page, @Param("archiveName") String archiveName,
                                             @Param("fileType") Integer fileType,
                                             @Param("userId") String userId,
                                             @Param("archiveTypeId") String archiveTypeId,
                                             @Param("archiveCode") String archiveCode,
                                             @Param("departmentId") String departmentId,
                                             @Param("startDate") String startDate,
                                             @Param("endDate") String endDate
    );

    List<ArchiveTypeVo> getArchiveTypeList();

    ArchiveCodeDTO getArchiveCode(@Param("departmentId") String departmentId);

}

